package cn.fan.testfunction.even;

import lombok.extern.log4j.Log4j2;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

/**
 * 创建监听者
 */
@Log4j2
@Component
public class AEventListener {
    /**
     * @EventListener(SaveEvent.class) 如果指定类型那就监听指定的
     * 默认监听注解下方法的参数
     *
     * 默认是同步阻塞，添加@Async来开启异步
     * order 可以指定执行顺序  但是如果前一个报错会导致后面的不执行  使用异步可解决
     * @param event
     */
//    @Order(1)
    @Async
    @EventListener
    public void listener(TestEvent event) throws InterruptedException {
        Thread.sleep(1000);
        log.info("监听到数据1：{}", event.getMessage());
    }

//    @Order(2)
    @Async
    @EventListener
    public void listener1(TestEvent event) throws InterruptedException {
        Thread.sleep(1000);
        log.info("监听到数据2：{}", event.getMessage());
    }
}
